package com.leesche.zcsp.node.web.dao;

import com.leesche.zcsp.node.app.v1.vo.FactoryDeviceVo;
import com.leesche.zcsp.node.web.model.PubDevice;
import com.leesche.zcsp.node.web.model.PubDeviceCriteria;
import com.leesche.zcsp.node.web.service.impl.data.read.*;
import com.leesche.zcsp.node.web.vo.v2.FactoryDeviceListVo;

import java.util.List;
import java.util.Map;


public interface PubDeviceDao extends
                              BaseDao<PubDevice, PubDeviceCriteria, PubDeviceDto, QueryPubDeviceCondition, Long> {
    /***
     *
     * @Title: selectByShortCode
     * @Description: TODO(通过支付简码获取设备ID)
     * @param @param paymenturlcode
     * @param @return
     * @return Integer
     * @throws
     */
    Integer selectByShortCode(String paymenturlcode);

    List<InfoDeviceDto> findDeviceList(QueryPubDeviceCondition condition);

    List<InfoDeviceDto> findDeviceListByPage(QueryPubDeviceCondition condition);

    Integer findDeviceListByPageCount(QueryPubDeviceCondition condition);

    InfoDeviceDto findInfoDevice(QueryPubDeviceCondition condition);

    List<Map<String, Object>> selectByUserID(Long userid);

    Integer updateByImme(PubDevice pubDevice);

    List<FactoryDeviceVo> selectFactoryDeviceList(QueryPubDeviceCondition condition);

    List<FactoryDeviceVo> selectFactoryDeviceListByPage(QueryPubDeviceCondition condition);

    Integer selectFactoryDeviceListByPageCount(QueryPubDeviceCondition condition);

    FactoryDeviceVo selectFactoryDevice(QueryPubDeviceCondition condition);

    List<FactoryDeviceListVo> selectFactoryDeviceListVoByPage(QueryPubDeviceCondition condition);

    Integer selectFactoryDeviceListVoByPageCount(QueryPubDeviceCondition condition);

    List<DeviceCountDto> countDeviceForFactory(QueryDeviceCountCondition condition);

    List<DeviceCountDataDto> selectDeviceDataForFactory(QueryDeviceCountCondition condition);

    int updateVersionByImme(Map map);

    PubDevice checkFactoryDevice(QueryPubDeviceCondition condition);

}